package com.xizi.jdkProxy;

import java.lang.reflect.Proxy;

/**
 * 获取代理对象的工厂类
 */
public class JdkProxyFactory {

    /*
     三个参数：
       1.  loader :类加载器，用于加载代理对象。
       2.  interfaces : 被代理类实现的一些接口；
       3.  h 实现了 InvocationHandler 接口的对象；
     */
    public static Object getProxy(Object target) {
        //主要通过Proxy.newProxyInstance（）方法获取某个类的代理对象
        return Proxy.newProxyInstance(
                target.getClass().getClassLoader(), // 目标类的类加载
                target.getClass().getInterfaces(),  // 代理需要实现的接口，可指定多个
                new DebugInvocationHandler(target)   // 代理对象对应的自定义 InvocationHandler
        );
    }
}